import axios from "axios";
import type { AxiosInstance, AxiosRequestConfig, AxiosResponse } from "axios";
import { useUserStore } from "../pinia";
// 根据环境确定 baseURL
const getBaseURL = () => {
  const env = import.meta.env.MODE;
  switch (env) {
    case "development":
      return "/api";
    case "production":
      return import.meta.env.VITE_API_BASE_URL || "https://api.default.com";
    default:
      return import.meta.env.VITE_API_BASE_URL || "/api";
  }
};

// 创建axios实例
const request: AxiosInstance = axios.create({
  baseURL: getBaseURL(),
  timeout: 5000,
});


// 路由白名单，不验证token
const whiteList = ["/login"];
// 请求拦截器
request.interceptors.request.use(
  (config: AxiosRequestConfig) => {
    const userStore = useUserStore();
    // 确保 headers 存在
    config.headers = config.headers ?? {};

    // 获取 token
    const token = userStore.getToken();
    if (token) {
      // 添加 token 到请求头
      config.headers['token'] = `${token}`;
    }
    return config;
  },
  (error) => {
    return Promise.reject(error);
  }
);

// 响应拦截器
request.interceptors.response.use(
  (response: AxiosResponse) => {
    //请求成功的处理
    if (response.status === 200) {
      return response.data;
    }
  },
  (error) => {
    // 错误信息处理
    if (error.status === 401) {
      // token 过期处理
    } else if (error.status === 404) {
      // 404 处理
    } else if (error.status === 500) {
      // 500 处理
    }
    return Promise.reject(error);
  }
);

export default request;
